/*
*
*  项目内容数据模型
*  负责内容部分数据
*
*/
// 导入数据库操作文件
const db = require('../../config/db.js')
module.exports = {
    // 编写添加内容方法
    // 参数：content_id,content_title,content_text,content_src,content_create_time,user_id,content_navigate,content_author
    add(content_id, content_title, content_text, content_src, content_create_time, user_id, content_navigate,content_author) {
        return new Promise((resolve, reject) => {
            //处理提交的数据
            let content_insert_sql = "insert into db_content(content_id,content_title,content_text,content_src,content_create_time,user_id,content_navigate,content_author) values('" + content_id + "','" + content_title + "','" + content_text + "','" + content_src + "','" + content_create_time + "','" + user_id + "','" + content_navigate + "','"+content_author+"')"
            db.query(content_insert_sql, function (err) {
                if (err) {
                    resolve({
                        code: -1,
                        msg: '添加内容失败。',
                        err
                    })
                } else {
                    resolve({
                        code: 200,
                        msg: '添加内容成功。'
                    })
                }
            })
        })
    },

    // 编写删除内容方法
    // 参数：user_id,content_id
    remove(content_id) {
        return new Promise((resolve, reject) => {
            db.query("delete from  db_content where content_id = '" + content_id + "'", function (err, rows) {
                if (err) {
                    resolve({
                        code: -1,
                        msg: '删除内容失败。'
                    })
                } else {
                    resolve({
                        code: 200,
                        msg: '删除内容成功。'
                    })
                }
            });
        })
    },

    // 编写获取内容列表方法
    // 参数：无
    list() {
        return new Promise((resolve, reject) => {
            db.query('select * from db_content', (err, rows) => {
                if (err) {
                    resolve({
                        code: -1,
                        msg: '获取内容列表失败。'
                    })
                } else {
                    resolve({
                        code: 200,
                        msg: '获取内容列表成功。',
                        result: rows
                    })
                }
            })
        })
    },

    // 编写搜索内容方法
    // 参数：keyword
    search(keyword) {
        return new Promise((resolve, reject) => {
            let content_select_sql = "select * from db_content where content_title LIKE CONCAT('%" + keyword + "%') or content_text LIKE CONCAT('%" + keyword + "%') or content_navigate LIKE CONCAT('%" + keyword + "%')";
            db.query(content_select_sql, (err, rows) => {
                if (err) {
                    resolve({
                        code: -1,
                        msg: '查询内容失败。',
                        err
                    })
                } else {
                    if (rows.length == 0) {
                        resolve({
                            code: -1,
                            msg: '没有该关键字匹配的内容。'
                        })
                    } else {
                        resolve({
                            code: 200,
                            msg: '查询内容成功。',
                            result: rows
                        })
                    }
                }
            })
        })
    },

    // 编写获取内容详情方法
    // 参数：content_id
    detail(content_id) {
        return new Promise((resolve, reject) => {
            // 多字段模糊查询
            db.query("select * from db_content where content_id = '" + content_id + "'", (err, rows) => {
                if (err) {
                    resolve({
                        code: -1,
                        msg: '查询内容失败。',
                        err
                    })
                } else {
                    if (rows.length == 0) {
                        resolve({
                            code: -1,
                            msg: '没有该关键字匹配的内容。'
                        })
                    } else {
                        resolve({
                            code: 200,
                            msg: '查询内容成功。',
                            result: rows
                        })
                    }
                }
            })
        })
    },

    // 编写获取导航内容方法
    // 参数：content_navigate
    getNavigate(content_navigate) {
        return new Promise((resolve, reject) => {
            db.query("select * from db_content where content_navigate = '"+content_navigate+"'", (err, rows) => {
                if (err) {
                    resolve({
                        code: -1,
                        msg: '查询导航失败。',
                        err
                    })
                } else {
                    if (rows.length == 0) {
                        resolve({
                            code: 1,
                            msg: '没有改导航分类。'
                        })
                    } else {
                        resolve({
                            code: 200,
                            msg: '查询导航成功。',
                            result: rows
                        })
                    }
                }
            })
        })
    },

    // 编写分页内容列表
    items(page_num,page_size){
        return new Promise((resolve,reject)=>{
            const params = [(parseInt(page_num) - 1) * parseInt(page_size), parseInt(page_size)]
            db.query("select * from db_content limit "+params[0]+","+params[1]+"", function (err, rows) {
                if (err) {
                    resolve({
                        code: -1,
                        msg: '查询内容失败。',
                        err 
                    })
                } else {
                    //as更换名称
                    db.query('select count(*) as total from db_content', function (error, among) {
                        if (error) {
                            resolve({
                                code: -1,
                                msg: '统计内容数量失败。',
                                error 
                            })
                        } else {
                            resolve({
                                code: 200,
                                msg: "获取分页列表成功。",
                                result: rows,
                                page: {
                                    page_num: page_num,
                                    page_size: page_size,
                                    total: among[0]['total'] //查询表中的数量
                                }
                            })
                        }
                    })
                }
            })
        
        })
    },

    // 编写统计内容数量方法
    all() {
        return new Promise((resolve, reject) => {
            db.query('select count(*) as total from db_content', function (error, among) {
                if (error) {
                    resolve({
                        code: -1,
                        msg: '统计内容数量失败。',
                        error
                    })
                } else {
                    resolve({
                        code: 200,
                        msg: "获取内容数量成功。",
                        total: among[0]['total']
                    })
                }
            })

        })
    },

    // 编写更新内容方法
    // 参数：content_id,content_title,content_text,content_create_time,content_author,content_navigate,content_src
    update(content_id, content_title, content_text, content_create_time, content_author, content_navigate, content_src) {
        return new Promise((resolve, reject) => {
            let update_content_sql = "update db_content set content_title= '" + content_title + "', content_text= '" + content_text + "', content_create_time= '" + content_create_time + "', content_author= '" + content_author + "', content_navigate= '" + content_navigate + "', content_src= '" + content_src + "' where  content_id= '" + content_id + "'"
            db.query(update_content_sql, (err, rows) => {
                if (err) {
                    resolve({ code: -1, msg: '更新内容失败。', err })
                } else {
                    resolve({ code: 200, msg: '更新内容成功。' })
                }
            })
        })
    },

}